package com.linkgie.galaxyframework.service.organization.data;

import com.linkgie.galaxyframework.data.EntityObject;
import com.linkgie.galaxyframework.organization.Organization;

/**
 * 部门；
 * 
 * @author huanghaiquan
 *
 */
public interface Department extends EntityObject, DepartmentDefinition {

	/**
	 * 唯一标识；<p>
	 * 
	 * 部门的唯一标识由系统分配，标识数据对象的唯一性；
	 */
	@Override
	String getId();

	/**
	 * 组织路径；
	 * <p>
	 * 
	 * 组织路径表示部门在组织结构树中的层级路径；
	 * <p>
	 * 
	 * 组织路径值以斜线("/")开头，余下的内容由从部门隶属的根部门到自身的组织结构树路径上的部门代码({@link #getCode()})以斜线("/")分隔组成；
	 * <p>
	 * 
	 * 一级部门的组织路径({@link #getOrganizationPath()})等于斜线("/")加上其编码({@link #getCode()})；
	 * 
	 * @return
	 */
	String getOrganizationPath();
	
	/**
	 * 组织层级；
	 * <p>
	 * 
	 * 部门在组织路径中所处的层级数；<p>
	 * 
	 * 例如，一级部门返回 1 ，其直接子部门返回 2，以此递推；
	 * 
	 * @return
	 */
	String getOrganizationLevel();
	
	/**
	 * 部门所属的组织；
	 * 
	 * @return
	 */
	Organization getOrganization();

}
